program lab3_691b;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

var
  // а - массив действительных чисел от 0 до 63 (всего 64 числа)
  a: array [0..63] of real;
  // i - целое число, переменная инкремента для цикла (см. ниже)
  i: integer;
begin
  // randomize инициализирует генератор случайных чисел
  randomize;
  // для каждого i в диапазоне 0 - 63 генерируем случайное значение элемента массива a
  // это то же самое что "даны действительные числа"
  // (в графе у нас нарисован "ввод", но вводить каждый раз 64 числа мы не будем - это скучно)
  for i:=0 to 63 do
  begin
       a[i] := 0.1 * (random(10) * i);
  end;

  // выводим на экран заданный массив чисел a, делая переход на новую строку спустя каждые 8 чисел
  for i:=0 to 63 do
  begin
       // чтобы таблица красиво выглядела, мы гарантируем, что выводится 2 цифры целой части и 1 цифра дробной
       // из-за того, что Pascal по-умолчанию выводит только значимые цифры и не ставит 0 перед числами меньше 10,
       // мы выводим перед такими числами пробел - чтобы матрица выглядела как таблица
       if a[i] < 10
          then write(' ');
       write(a[i]:2:1, '  ');
       // если целочисленный остаток от деления (mod) на 8 равен 7, то число выведенных чисел кратно 8, и нужно сделать переход на новую строку
       if (i mod 8 = 7)
          then writeln;
  end;
  // в конце программы нужно поставить readln, чтобы она ждала нажатия клавиши и не закрылась сразу же, не показав результаты своей работы
  readln;
end.


